#ifndef OPERATINGCENTER_HH
#define OPERATINGCENTER_HH

#include "data_library.hpp"
#include <vector>
#define MAX_BUS 10



class OperatingCenter{

private :
    int maxBus;
    static OperatingCenter *single;
	//mutex permettant l'ecriture dans le fichier de log des positions
	pthread_mutex_t mutexDispo;

public :
  	vector< vector<Bus_Stop_Line> > BusLine_vector;
  	

//Constructeur
	OperatingCenter(int i);
	static OperatingCenter* getInstance();
//Destructeur
    virtual ~OperatingCenter();
//Definir le max de bus que l'operating center va gerer
	void define_max_bus(int i);
//Pour ajouter/creer une ligne de bus
	void add_bus_line(vector<Bus_Stop_Line> &bsl);
//mettre a jour la position du bus
	void set_bus_pos (int numline, int numBus, Position* p,float speed);
//annoncer qu'il ya un probleme
	int announceProblem(int numBus, char *message, Position *_p);
//sauver la position dans un fichier	
	void save_position(int nl,int nb,struct Position *p );
// renvoie l'incice dans le tableau du bus stop passe en param	
	int getIndiceBusStop(int numline, int numBusStop);
//creation de la page d'acceuil en html en fonction du nombre de bus
	void WelcomeHTML(int nb);
//creation de la page info bus
	void BusesHTML(int numline,int numBus, struct Position *p, float speed);
// Envoit a tous les bus stop suivant la position du bus	
	void sendPositionBusStops(bool sens_alle,int numline, int numBusStop, T_Schedule*);
//Affecte le nombre de bus
	void setNbBus(int nb);

};
#endif
